home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 18 / CU Amiga Magazine's Super CD-ROM 18 (1997)(EMAP Images)(GB)[!][issue 1998-01].iso / CUCD / Programming / AmigaE / Src / Tools / CloneScreen / clonescreen.e next >
Text File  |  1997-03-08  |  3KB  |  77 lines

  1. -> clonescreen.c, from RKRM libs.
  2.  
  3. OPT MODULE, OSVERSION=37
  4.  
  5. MODULE 'intuition/intuition', 'intuition/screens',
  6.        'graphics/text', 'graphics/modeid'
  7.  
  8. EXPORT PROC openclonescreen(pub_screen_name,clone_title,depth=0,clone_pub_name=NIL)
  9.   DEF my_screen=NIL:PTR TO screen, screen_modeID, pub_scr_font_name,
  10.       font_name, font_name_size, pub_screen_font:PTR TO textattr,
  11.       opened_font=NIL:PTR TO textfont, pub_screen:PTR TO screen,
  12.       screen_drawinfo=NIL:PTR TO drawinfo, di_font:PTR TO textfont
  13.  
  14.   IF pub_screen:=LockPubScreen(pub_screen_name)
  15.     IF screen_drawinfo:=GetScreenDrawInfo(pub_screen)
  16.       di_font:=screen_drawinfo.font
  17.       IF (screen_modeID:=GetVPModeID(pub_screen.viewport))<>INVALID_ID
  18.         pub_scr_font_name:=Long(di_font+10)  -> node.name
  19.         font_name_size:=1+StrLen(pub_scr_font_name)
  20.         IF font_name:=String(font_name_size)
  21.           StrCopy(font_name,pub_scr_font_name)
  22.           pub_screen_font:=[font_name,di_font.ysize,di_font.style,di_font.flags]:textattr
  23.           IF opened_font:=OpenFont(pub_screen_font)
  24.             IF my_screen:=OpenScreenTagList(NIL,
  25.               [SA_WIDTH,      pub_screen.width,
  26.                SA_HEIGHT,     pub_screen.height,
  27.                SA_DEPTH,      IF depth THEN depth ELSE screen_drawinfo.depth,
  28.                SA_TYPE,       IF clone_pub_name THEN PUBLICSCREEN ELSE CUSTOMSCREEN,
  29.                SA_OVERSCAN,   OSCAN_TEXT,
  30.                SA_AUTOSCROLL, TRUE,
  31.                SA_FONT,       pub_screen_font,
  32.                SA_PENS,       screen_drawinfo.pens,
  33.                SA_DISPLAYID,  screen_modeID,
  34.                SA_TITLE,      clone_title,
  35.                SA_PUBNAME,    clone_pub_name,
  36.                NIL])
  37.             ENDIF
  38.           ENDIF
  39.         ENDIF
  40.       ENDIF
  41.       FreeScreenDrawInfo(pub_screen,screen_drawinfo)
  42.     ENDIF
  43.     UnlockPubScreen(pub_screen_name,pub_screen)
  44.   ENDIF
  45.   IF my_screen=NIL THEN Raise("SCR")
  46. ENDPROC my_screen,opened_font
  47.  
  48. EXPORT PROC closeclonescreen(screen,font,window=NIL)
  49.   DEF r
  50.   IF window THEN CloseWindow(window)
  51.   IF screen THEN r:=CloseScreen(screen)
  52.   IF r THEN IF font THEN CloseFont(font)
  53. ENDPROC r
  54.  
  55. EXPORT PROC getcloneinfo(screen:PTR TO screen)
  56.   DEF di:PTR TO drawinfo, depth=0
  57.   IF di:=GetScreenDrawInfo(screen)
  58.     depth:=di.depth
  59.     FreeScreenDrawInfo(screen,di)
  60.   ENDIF
  61. ENDPROC depth,screen.width,screen.height
  62.  
  63. EXPORT PROC backdropwindow(screen:PTR TO screen,idcmp=0,flags=0)
  64.   DEF wnd=NIL:PTR TO window
  65.   IF (wnd:=OpenWindowTagList(NIL,
  66.     [WA_LEFT,0,
  67.      WA_TOP,0,
  68.      WA_WIDTH,screen.width,
  69.      WA_HEIGHT,screen.height,
  70.      WA_IDCMP,idcmp,
  71.      WA_FLAGS,flags OR $1900,
  72.      WA_TITLE,'',
  73.      WA_CUSTOMSCREEN,screen,
  74.      NIL]))=NIL THEN Raise("WIN")
  75.   stdrast:=wnd.rport
  76. ENDPROC wnd
  77.